#ifndef NODE_H
#define NODE_H

#include "main.h"

/**
 * @brief 链表节点结构体
 */
typedef struct _node {
    int data;
    struct _node* next;//不能直接`Node* next`,因为此时Node还未出现/定义
} Node;

/**
 * @brief 链表结构体,代表整个链表
 */
typedef struct _list {
    Node* head;
    Node* tail;
    int size;
} List;

/**
 * @brief 初始化链表
 * @return 初始化后的链表
 */
List list_init();

/**
 * @brief 添加节点到链表,尾插.
 * @param plist 链表指针
 * @param number 节点数据
 */
void node_add(List* plist, int number);

/**
 * @brief 打印整个链表
 */
void node_print(List list);

/**
 * @brief 删除指定值的节点
 * @param plist 链表指针
 * @param number 要删除的节点数据
 */
void node_delete(List* plist, int number);

/**
 * @brief 释放链表
 */
void node_free(List* plist);


#endif